import Vue from 'vue';

import { dayjs } from 'utils/date';

/***********************************************
 ****************     格式化    *****************
 ************************************************/
/**
 * 时间格式化
 * @author guzhanghua
 * @param {*} value
 * @param {*} fmt 格式化格式
 * @example :
 *    {{date | date_format }}                   =>   2019-01-08 11:11:08
 *    {{date | date_format('YYYY-MM-DD') }}     =>   2019-01-08
 */
Vue.filter('date_format', (value, fmt = 'YYYY-MM-DD HH:mm:ss') => {
  if (!value) return '';
  return dayjs(value).format(fmt);
});

/**
 * 相对时间格式化
 * @author guzhanghua
 * @param {*} value
 * @example :
 *    {{date | date_format_fromnow }}     =>   1 天前
 *    {{date | date_format_fromnow }}     =>   11 小时前
 */
Vue.filter('date_format_fromnow', value => {
  if (!value) return '';
  return dayjs(value)
    .locale('zh-cn')
    .fromNow();
});

/**
 *  获取当前年份
 * @param { String } suffix '格式化添加的后缀'
 * @returns { String } '2020年'
 * 
 * @example
 *  1.  
      <!-- 2020年 -->
      <div>{{ date | date_format_year }}</div>  
    2.      
      <!-- suffix : 2020--年 -->
      <div>{{ date | date_format_year('--年') }}</div>     
 */
Vue.filter('date_format_year', (value, suffix = '年') => {
  if (!value) return '';
  return `${dayjs(value).year()}${suffix}`;
});

/**
 * 获取当前月份
 * @param { String } suffix '当前的月份后缀'
 * @returns { String } '12月'
 *
 * examples:
 *   {{date | date_format_month}}          =>   1月
 *
 *   {{date | date_format_month('月份')}}     =>   1月份
 */
Vue.filter('date_format_month', (value, suffix = '月') => {
  if (!value) return '';
  return `${dayjs(value).month() + 1}${suffix}`;
});

/**
 * 获取当前日期
 * @param { String } suffix '当前的日后缀'
 * @returns { String } '12月'
 * examples:
 *   {{date | date_format_date}}                =>   9日
 *   {{date | date_format_date('日')}}          =>   9日
 */
Vue.filter('date_format_date', (value, suffix = '日') => {
  if (!value) return '';
  return `${dayjs(value).date()}${suffix}`;
});
/**
 * 获取当前小时
 * @param { String } suffix '当前的小时后缀'
 * @returns { String } '12时'
 * examples:
 *   {{date | date_format_hour}}               =>    9时
 *   {{date | date_format_hour('点')}}          =>   9点
 */
Vue.filter('date_format_hour', (value, suffix = '时') => {
  if (!value) return '';
  return `${dayjs(value).hour()}${suffix}`;
});
/**
 * 获取当前分钟
 * @param { String } suffix '当前的分钟后缀'
 * @returns { String } '12分'
 * examples:
 *   {{date | date_format_minute('分')}}     =>   9分
 *   {{date | date_format_minute}}          =>   9分
 */
Vue.filter('date_format_minute', (value, suffix = '分') => {
  if (!value) return '';
  return `${dayjs(value).minute()}${suffix}`;
});
/**
 * 获取当前秒
 * @param { String } suffix '当前的秒后缀'
 * @returns { String } '12秒'
 * examples:
 *   {{date | date_format_second('秒')}}     =>   9秒
 *   {{date | date_format_second}}          =>   9秒
 */
Vue.filter('date_format_second', (value, suffix = '') => {
  if (!value) return '';
  return `${dayjs(value).second()}${suffix}`;
});
